﻿//using System;
//using System.Collections.Generic;
//using System.Data.Entity.Infrastructure;
//using System.Linq;
//using System.Security.Cryptography;
//using System.Text;
//using System.Threading.Tasks;
//using System.Web.ModelBinding;
//using wne.Context;
//using System.Data.SqlClient;
//using wne.models;
//using System.Text.RegularExpressions;
//using System.Web.UI.WebControls;
//using System.Configuration;
//using Group_Field = wne.models.Group_Field;

//using System.Data.Linq;


//namespace wne.core
//{
//    public class Class1
//    {
//        private List<Context.Group> _cacheGroups;

//        public Class1()
//        {
//            using (var context = new tpksEntities())
//            {
//                _cacheGroups = context.Group.ToList();
//            }
//        }
//        private static int hash_user_group(int user, int group)
//        {
//            return user * 10000 + group;
//        }
//        private static int hash_user_group_field(int user, int group,int field)
//        {
//            return (user % 1000)*1000000 + (group%1000)*1000+(field%1000);
//        }
//        private static System.Data.SqlClient.SqlConnection con = null;
//        private static System.Data.SqlClient.SqlConnection con2 = null;

//        public static models.UserModel getUsers()
//        {
//          return new models.UserModel();
//        }

//        private static int ConnectionOpen()
//        {
//            string path = (string)AppDomain.CurrentDomain.GetData("DataDirectory");
//            char separator = '\\';
//            string[] parts = path.Split(separator);
//            string realpath = "";
//            for (int i = 0; i < parts.Length - 2; i++) realpath += parts[i] + "\\";
//            realpath += @"WNE.CONTEXT\NNZ.MDF";
//            con = new System.Data.SqlClient.SqlConnection();
//            con.ConnectionString = @"Data Source=(LocalDB)\v11.0;Attachdbfilename=" + realpath + ";Integrated Security=True;MultipleActiveResultSets=True;";
//            con.ConnectionString = @"Data source=s08.winhost.com; Initial Catalog=DB_68630_tpks; User ID=DB_68630_tpks_user; password=agrutneajli";
//            con.ConnectionString = @"Data Source=s08.winhost.com;Initial Catalog=DB_68630_tpks;Persist Security Info=True;User ID=DB_68630_tpks_user;Password=agrutneajli;MultipleActiveResultSets=True;Application Name=EntityFramework";
//            models.GroupModel tmpgroup = new models.GroupModel();
//            try
//            {
//                con.Open();
//                return 0;
//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());

//                return 1;
//            }
//        }

//        private static int ConnectionOpen2()
//        {
//            string path = (string)AppDomain.CurrentDomain.GetData("DataDirectory");
//            char separator = '\\';
//            string[] parts = path.Split(separator);
//            string realpath = "";
//            for (int i = 0; i < parts.Length - 2; i++) realpath += parts[i] + "\\";
//            realpath += @"WNE.CONTEXT\NNZ.MDF";
//            con2 = new System.Data.SqlClient.SqlConnection();
//            con2.ConnectionString = @"Data Source=(LocalDB)\v11.0;Attachdbfilename=" + realpath + ";Integrated Security=True;MultipleActiveResultSets=True;";
//            models.GroupModel tmpgroup = new models.GroupModel();
//            try
//            {
//                con2.Open();
//                return 0;
//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());

//                return 1;
//            }
//        }

//        public static int ConnectionClose()
//        {
//            try
//            {
//                con.Close();
//                return 0;
//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());
//                con.Close();
//                return 1;
//            }
//        }
//        public static void aaddGroup(tpks2Entities2 context,models.EditUserModel model,int ugid, System.Linq.IQueryable<Context.Group_Relation> querygr, System.Linq.IQueryable<Context.Group_Field> querygf)
//        {

//            var context = new wne.Context.tpks2Entities2();
//                foreach (var q in querygf)
//                    if(q.Group_ID==ugid)
//                    {
//                        Context.User_Grp_Prm_Value ugpv = new User_Grp_Prm_Value();
//                        ugpv.Field_ID=q.Field_ID;
//                        ugpv.Group_ID=ugid;
//                        ugpv.User_ID=model.Id;
//                        ugpv.Param_Value_ID=hash_user_group_field(ugpv.Field_ID,ugpv.Group_ID,ugpv.User_ID);
//                        ugpv.Field_Value="nya?";
//                        context.User_Grp_Prm_Value.Add(ugpv);
//                    }
            
//                foreach (var q in querygr)
//                    if (q.Child_Group_ID == ugid)
//                    {
//                        bool qqq=true;
//                        foreach (var w in model.Groups)
//                            if (w.i == q.Parent_Group_ID)
//                                qqq = false;
//                        if(qqq)
//                            aaddGroup(context, model, q.Parent_Group_ID, querygr, querygf);
                        

//                    }
//        }
//        public static models.EditUserModel addGroup(models.EditUserModel model, int GroupId)
//        {
//            using (var context = new tpksEntities())
//            {
//                var querygr = from gr5 in context.Group_Relation select gr5;
//                var querygf = from gr2 in context.Group_Field select gr2;
//                if (context.Group.Any(x => x.Group_ID == GroupId))
//                {
//                    User_Group ug = new User_Group();
//                    ug.Group_ID = GroupId;
//                    ug.User_ID = model.Id;
//                    ug.Counter = hash_user_group(model.Id, GroupId);
//                    context.User_Group.Add(ug);
//                    aaddGroup(context,model, ug.User_ID, querygr, querygf);
//                }
//                context.SaveChanges();
//                model = GetUserById(model.Id);
//            }

//            return model;
//        }
//        public static void ddelGroup(tpks2Entities2 context, models.EditUserModel model, User_Group ug, System.Linq.IQueryable<Context.Group_Relation> querygr, System.Linq.IQueryable<Context.User_Grp_Prm_Value> queryugpv)
//        {

//            var context = new wne.Context.tpks2Entities2();
//            foreach (var q in queryugpv)
//                if ((q.Group_ID == ug.Group_ID) && (q.User_ID == model.Id))
//                {
//                    context.User_Grp_Prm_Value.Remove(q);
//                }

//            foreach (var q in querygr)
//                if (q.Child_Group_ID == ug.Group_ID)
//                {
//                    bool qqq = true;
//                    foreach (var w in model.Groups)
//                        if (w.i == q.Parent_Group_ID)
//                            qqq = false;
//                    if (qqq)
//                    {
//                        ddelGroup(context, model, ug, querygr, queryugpv);
//                    }

//                }
//        }
//        public static models.EditUserModel delGroup(models.EditUserModel model, int GroupId)
//        {
            

//            using (var context = new tpks2Entities2())
//            {

//                var querygr = from gr5 in context.Group_Relation select gr5;
//                var queryugpv = from gr2 in context.User_Grp_Prm_Value select gr2;
//                int counter = hash_user_group(model.Id, GroupId);
//                var ug = context.User_Group.FirstOrDefault(x => x.Counter == counter);
//                if (ug != null)
//                    ddelGroup(context, model, ug, querygr, queryugpv);
//                context.User_Group.Remove(ug);
//                context.SaveChanges();
//                model = GetUserById(model.Id);
//            }
//            return model;
//        }
//        public static void field_add(models.Group_Field gf, models.Group_Field gf2)
//        {
//            foreach (var q in gf2.Fields) gf.Fields.Add(q);
//        }
//        public static models.Group_Field makusrgr(EditUserModel model, Context.Group GroupsId, System.Linq.IQueryable<Context.Group> queryg, System.Linq.IQueryable<Context.Group_Field> querygf, System.Linq.IQueryable<Context.User_Grp_Prm_Value> queryugpv, System.Linq.IQueryable<Context.Type_Param> querytp, System.Linq.IQueryable<Context.Group_Relation> querygr)
//        {
//            models.Group_Field gf = new models.Group_Field();
//            gf.Id = GroupsId.Group_ID;
//            gf.Name = GroupsId.Group_Name;
//            gf.Fields = new List<FieldModel>();
//            foreach (var itemgf in querygf)
//                if (itemgf.Group_ID == GroupsId.Group_ID)
//                {
//                      foreach (var itemtp in querytp)itemtp.
//                    FieldModel fi = new FieldModel();
//                    fi.Name = itemgf.Field_Name;

//                    if (itemgf.User_Edit_Flag[0] == '1') fi.UserCanEdit = true;
//                    else fi.UserCanEdit = true;
//                    if (itemgf.Mandatory_Flag[0] == '1') fi.Mandatory = true;
//                    else fi.Mandatory = true;
//                    fi.Type = new FieldTypeEnum();
//                    fi.Type.id = itemgf.Field_Type;
//                    foreach (var itemtp in querytp)
//                        if (fi.Type.id == itemtp.Type_ID)
//                            fi.Type.name = itemtp.Type_Param1;
//                    foreach (var itemugpv in queryugpv)
//                        if (itemugpv.Field_ID == itemgf.Field_ID)
//                        {
//                            fi.Value = itemugpv.Field_Value;
//                            fi.id = itemugpv.Field_ID;
//                        }
//                    gf.Fields.Add(fi);
//                    gf.Fields.Add();
//                }
//            foreach (var itemgr in querygr)
//                if (itemgr.Child_Group_ID == GroupsId.Group_ID)
//                {
//                    foreach (var itemg2 in queryg)
//                        if (itemg2.Group_ID == itemgr.Parent_Group_ID)
//                            field_add(gf, makusrgr(model, itemg2, queryg, querygf, queryugpv, querytp, querygr));
//                }
//            model.User_Fields.Add(gf);
//            return gf;
//        }
//        public static void DestroyGroup(Dictionary<int, string> allg, int gr_id, System.Linq.IQueryable<Context.Group_Relation> querygr)
//        {
//            foreach (var q in querygr)
//                if (q.Child_Group_ID == gr_id)
//                {
//                again:
//                    foreach (var a in allg)
//                        if (a.Key == q.Parent_Group_ID)
//                        {
//                            DestroyGroup(allg, a.Key, querygr);
//                            allg.Remove(a.Key);
//                            goto again;
//                        }
//                }
//        }
//        public static Dictionary<int, string> GetUserAllGroups(int id, System.Linq.IQueryable<Context.Group> queryg, System.Linq.IQueryable<Context.User_Group> queryug, System.Linq.IQueryable<Context.Group_Relation> querygr)
//        {
//            Dictionary<int, string> allg = new Dictionary<int, string>();//=GetAllGroupss(1);
//            foreach (var q in queryg)
//            {
//                allg.Add(q.Group_ID, q.Group_Name);
//            }
//            foreach (var q in queryug)
//            {
//                if (q.User_ID == id)
//                {
//                    DestroyGroup(allg, q.Group_ID, querygr);
//                again:
//                    foreach (var a in allg)
//                        if (a.Key == q.Group_ID)
//                        {
//                            DestroyGroup(allg, a.Key, querygr);
//                            allg.Remove(a.Key);
//                            goto again;
//                        }
//                }
//            }
//            return allg;
//        }
//        public static models.EditUserModel GetUserById(int id)
//        {

//            using (var context = new tpks2Entities2())
//            {
//               /* if (id == -1)
//                {
//                    var model = new UserModel();
//                    model.AllGroups = GetAllGroups();
//                    model.Groups = new List<IntString>();
//                    model.User_Fields = new List<Group_Field>();
//                    return model;
//                }*/
//                var UserId = context.User.FirstOrDefault(x => x.User_ID == id);
//                if (UserId != null)
//                {

//                    models.EditUserModel model = new models.EditUserModel(UserId.User_ID, UserId.First_Name, UserId.Email);
//                    var FieldsId = context.Group_Field.FirstOrDefault(x => x.Group_ID == Id);
//                    var queryug = from gr1 in context.User_Group select gr1;
//                    var querygf = from gr2 in context.Group_Field select gr2;
//                    var queryugpv = from gr3 in context.User_Grp_Prm_Value select gr3;
//                    var querytp = from gr4 in context.Type_Param select gr4;
//                    var querygr = from gr5 in context.Group_Relation select gr5;
//                    var queryg = from gr6 in context.Group select gr6;
//                     var querytp = from gr4 in context. select gr4;
//                    foreach (var itemg in queryug)
//                        if (itemg.User_ID == id)
//                        {
//                            addGroup(model, item.Group_ID);

//                            IntString gr = new IntString();
//                            gr.i = itemg.Group_ID;
//                            var GroupsId = context.Group.FirstOrDefault(x => x.Group_ID == itemg.Group_ID);
//                            gr.s = GroupsId.Group_Name;
//                            model.Groups.Add(gr);
//                            makusrgr(model, GroupsId, queryg, querygf, queryugpv, querytp, querygr);
//                            /* for (int a = 0; a < context.User_Grp_Prm_Value.Count(); a++)
//                                 if ((context.User_Grp_Prm_Value.ElementAt(a).Group_ID == itemg.Group_ID) && (context.User_Grp_Prm_Value.ElementAt(a).User_ID == id))
//                                 {
//                                     wne.models.FieldModel fie = new FieldModel();
//                                     gf.Fields.Add(fie);
//                                     fie.Value = context.User_Grp_Prm_Value.ElementAt(a).Field_Value;
//                                     fie.mandatory = context.Group_Field;
//                                 }*/
//                        }

//                    /*
//                    gr.i = id;
//                    gr.s = GroupsId.Group_Name;
//                    model.Groups.Add(gr);*/
//                    UserId.Email = "qqq";
//                    context.SaveChanges();
//                    model.AllGroups = GetUserAllGroups(model.Id, queryg, queryug, querygr);
//                    return model;
//                }
//            }
//            return null;
//        }
//        public static void DelUser(EditUserModel model)
//        {
//            using (var context = new tpks2Entities2())
//            {
//                var queryug = from gr1 in context.User_Group select gr1;
//                var userid = context.User.FirstOrDefault(x => x.User_ID == model.Id);
//                var queryugpv = from gr3 in context.User_Grp_Prm_Value select gr3;
//                again1:
//                foreach (var q1 in queryug)
//                    if (q1.User_ID == userid.User_ID)
//                    { context.User_Group.Remove(q1); }
//                again2:
//                foreach (var q2 in queryugpv)
//                    if (q2.User_ID == userid.User_ID)
//                    { context.User_Grp_Prm_Value.Remove(q2); }
//                context.User.Remove(userid);
//            }
//        }
//        public static int AddUser(string login,string email,string name,string date)
//        {
//            using (var context = new tpks2Entities2())
//            {
//                Context.User userid = new Context.User();
//                userid.Admin_Flag = "1";
//                userid.Birth_Date = DateTime.Parse(date);
//                userid.Email = email;
//                userid.First_Name = name;
//                userid.Last_Name = name;//
//                userid.Login = name;//
//                userid.Password = "1";//
//                userid.Profession = "tadjik";//
//                userid.Second_Name = name;//
//                context.User.Add(userid);
//                context.SaveChanges();
//                context.Entry(userid).GetDatabaseValues();
//                userid.ICQ = userid.User_ID;//
//                return userid.User_ID;
//            }
//            return -1;
//        }
//        public static Boolean UpdateOrAddUser(EditUserModel model)
//        {
//            using (var context = new tpks2Entities2())
//            {
//                var queryug = from gr1 in context.User_Group select gr1;
//                var userid = context.User.FirstOrDefault(x => x.User_ID == model.Id);
//                var queryugpv = from gr3 in context.User_Grp_Prm_Value select gr3;
//                bool flag = true;
//               /* if (userid == null)
//                {


//                    userid = new User();
//                    userid.Admin_Flag = "1";
//                    userid.Birth_Date = DateTime.Today;
//                    userid.Email = model.User_Email;
//                    userid.First_Name = model.User_Name;
//                    userid.ICQ = model.Id;//
//                    userid.Last_Name = model.User_Name;//
//                    userid.Login = model.User_Name;//
//                    userid.Password = model.User_Name;//
//                    userid.Profession = model.User_Name;//
//                    userid.Second_Name = model.User_Name;//
//                    context.User.Add(userid);
//                    context.SaveChanges();
//                    context.Entry(userid).GetDatabaseValues();
//                    model.Id = userid.User_ID;
//                    for (int i = 0; i < model.Groups.Count; i++)
//                    {
//                        User_Group usergroup = new User_Group();
//                        context.User_Group.Add(usergroup);
//                        usergroup.Group_ID = model.Groups[i].i;
//                        usergroup.User_ID = model.Id;
//                        usergroup.Counter = hash_user_group(model.Id, model.Groups[i].i);

//                        for (int a = 0; a < model.User_Fields[i].Fields.Count(); a++)
//                        {
//                            User_Grp_Prm_Value userparam = new User_Grp_Prm_Value();
//                            usergroup.User_ID = model.Id;
//                            userparam.Field_Value = model.User_Fields[i].Fields[a].Value;
//                            userparam.Group_ID = model.Groups[i].i;
//                            userparam.Field_ID = model.User_Fields[i].Fields[a].id;
//                            userparam.Field_Value = "q";
//                            context.User_Grp_Prm_Value.Add(userparam);
//                            userparam.Field_ID=model.User_Fields[i].Fields[a].type.id;
//                        }
//                    }
//                    context.SaveChanges();
//                }
//                else*/
//                {
//                    /*userid.Admin_Flag = "1";
//                    userid.Birth_Date = DateTime.Today;
//                    userid.Email = model.User_Email;
//                    userid.First_Name = model.User_Name;
//                    userid.ICQ = model.Id;//
//                    userid.Last_Name = model.User_Name;//
//                    userid.Login = model.User_Name;//
//                    userid.Password = model.User_Name;//
//                    userid.Profession = model.User_Name;//
//                    userid.Second_Name = model.User_Name;//
//                    context.SaveChanges();*/
//                    for (int i = 0; i < model.User_Fields.Count; i++)
//                    {
//                        /*User_Group usergroup = null;
//                        foreach (var q in queryug)
//                        {
//                            if ((q.User_ID == model.Id) && (q.Group_ID == model.Groups[i].i))
//                                usergroup = q;
//                        }
//                        /*if (usergroup == null)
//                        {
//                            usergroup = new User_Group();
//                            context.User_Group.Add(usergroup);
//                            usergroup.Group_ID = model.Groups[i].i;
//                            usergroup.User_ID = model.Id;
//                            usergroup.Counter = hash_user_group(model.Id, model.Groups[i].i);
//                        }*/
//                        for (int a = 0; a < model.User_Fields[i].Fields.Count(); a++)
//                        {
//                            User_Grp_Prm_Value userparam = null;
//                            foreach (var q2 in queryugpv)
//                            {
//                                if ((q2.User_ID == model.Id) && (q2.Group_ID == model.User_Fields[i].Id))
//                                    userparam = q2;
//                                if (userparam == null)
//                                {
//                                    userparam = new User_Grp_Prm_Value();
//                                    userparam.Group_ID = model.Groups[i].i;
//                                    userparam.Field_ID = model.User_Fields[i].Fields[a].id;
//                                    userparam.Field_Value = "";
//                                    userparam.Field_ID=model.User_Fields[i].Fields[a].Type.id;
//                                    context.User_Grp_Prm_Value.Add(userparam);
//                                }
//                                usergroup.User_ID = model.Id;
//                                userparam.Field_Value = model.User_Fields[i].Fields[a].Value;
//                                userparam.Group_ID = model.Groups[i].i;
//                                userparam.Field_ID = model.User_Fields[i].Fields[a].id;
//                                userparam.Field_Value = "q";
//                                userparam.Field_ID=model.User_Fields[i].Fields[a].type.id;

//                            }
//                        }

//                    }
//                    context.SaveChanges();

//                }
//            }

//            return true;
//        }


       


//        заполняет группу с Id данными из таблицы в формате GroupModel            

//        public static models.GroupModel GetGroupById(int Id)
//        {
//            try
//            {
//                models.GroupModel tmpgroup = new models.GroupModel();
//                using (var context = new tpks2Entities2())
//                {

//                    if (Id == -1)
//                    {
//                        Dictionary<int, string> dic = new Dictionary<int, string>();
//                        foreach (var rd in context.Group)
//                        {
//                            dic.Add(rd.Group_ID, rd.Group_Name);
//                        }
//                        tmpgroup.AvaliableParents = dic;
//                    }
//                    else
//                    {
//                        var rd = context.Group.FirstOrDefault(x => x.Group_ID == Id);
//                        tmpgroup.Id = rd.Group_ID;
//                        tmpgroup.Name = rd.Group_Name;
//                        List<models.FieldModel> fieldlist = new List<models.FieldModel>();
//                        var Query = from gr in context.Group_Field join pr in context.Type_Param on gr.Field_Type equals pr.Type_ID where gr.Group_ID == Id select new { gr.Field_ID, gr.Group_ID, gr.Field_Name, gr.Field_Type, gr.Field_Value, gr.User_Edit_Flag, gr.Mandatory_Flag, pr.Type_Param1 };
//                        foreach (var item in Query)
//                        {

//                            models.FieldModel fieldModel = new models.FieldModel();
//                            fieldModel.Name = item.Field_Name;
//                            fieldModel.Value = item.Field_Value;
//                            if (item.Field_Type == 1)
//                            {
//                                models.FieldNumeric type = new models.FieldNumeric();
//                                type.id = item.Field_Type;
//                                type.name = item.Type_Param1;
//                                fieldModel.Type = type;
//                            }
//                            if (item.Field_Type == 0)
//                            {
//                                models.FieldText type = new models.FieldText();
//                                type.id = item.Field_Type;
//                                type.name = item.Type_Param1;
//                                fieldModel.Type = type;
//                            }
//                            if (item.Field_Type == 2)
//                            {
//                                models.FieldDate type = new models.FieldDate();
//                                type.id = item.Field_Type;
//                                type.name = item.Type_Param1;
//                                fieldModel.Type = type;
//                            }
//                            if (item.Field_Type == 3)
//                            {
//                                models.FieldVariantOne type = new models.FieldVariantOne();
//                                string[] parts = fieldModel.Value.Split(';');
//                                type.values = new Dictionary<int, string>();
//                                for (int i = 0; i < parts.Length; i++)
//                                {
//                                    type.values.Add(i, parts[i]);
//                                }
//                                type.id = item.Field_Type;
//                                type.name = item.Type_Param1;
//                                fieldModel.Type = type;
//                            }
//                            if (item.Field_Type == 4)
//                            {
//                                models.FieldVariantMany type = new models.FieldVariantMany();
//                                string[] parts = fieldModel.Value.Split(';');
//                                type.values = new List<CheckBox>();
//                                for (int i = 0; i < parts.Length; i++)
//                                {
//                                    CheckBox cb = new CheckBox();
//                                    cb.Text = parts[i];
//                                    type.values.Add(cb);
//                                }
//                                type.id = item.Field_Type;
//                                type.name = item.Type_Param1;
//                                fieldModel.Type = type;

//                            }

//                            if ((item.User_Edit_Flag)[0] == '1')
//                                fieldModel.UserCanEdit = true;
//                            else
//                                fieldModel.UserCanEdit = false;
//                            if ((item.Mandatory_Flag)[0] == '1')
//                                fieldModel.Mandatory = true;
//                            else
//                                fieldModel.Mandatory = false;

//                            fieldlist.Add(fieldModel);
//                        }
//                        tmpgroup.Fields = fieldlist;

//                        var Query1 = from gr in context.Group join par in context.Group_Relation on gr.Group_ID equals par.Parent_Group_ID where par.Child_Group_ID == Id select gr;
//                        Dictionary<int, string> dic1 = new Dictionary<int, string>();
//                        foreach (var item in Query1)
//                        {
//                            dic1.Add(item.Group_ID, item.Group_Name);
//                        }
//                        tmpgroup.SelectedParents = dic1;

//                        var Query2 = from gr in context.Group where gr.Group_ID != Id select gr;
//                        Dictionary<int, string> dic2 = new Dictionary<int, string>();
//                        foreach (var item in Query2)
//                        {
//                            dic2.Add(item.Group_ID, item.Group_Name);
//                        }
//                        tmpgroup.AvaliableParents = dic2;

//                    }
//                }
//                return tmpgroup;
//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());
//                return null;
//            }
//        }

//        заполняет группу с Id данными из таблицы в формате GroupSmallModel

//        public static models.GroupSmallModel GetAllGroupById(int Id)
//        {
//            try
//            {
//                models.GroupSmallModel tmpgroup = new models.GroupSmallModel();
//                using (var context = new tpks2Entities2())
//                {
//                    var rd = context.Group.FirstOrDefault(x => x.Group_ID == Id);
//                    tmpgroup.Id = rd.Group_ID;
//                    tmpgroup.Name = rd.Group_Name;
//                    var Query = from us in context.User_Group where us.Group_ID == Id select us;
//                    tmpgroup.Count = Query.Count();
//                    List<models.FieldModel> fieldlist = new List<models.FieldModel>();
//                    var Query1 = from gr in context.Group_Field join pr in context.Type_Param on gr.Field_Type equals pr.Type_ID where gr.Group_ID == Id select new { gr.Field_ID, gr.Group_ID, gr.Field_Name, gr.Field_Type, gr.Field_Value, gr.User_Edit_Flag, gr.Mandatory_Flag, pr.Type_Param1 };
//                    foreach (var item in Query1)
//                    {

//                        models.FieldModel fieldModel = new models.FieldModel();
//                        fieldModel.Name = item.Field_Name;
//                        fieldModel.Value = item.Field_Value;
//                        if (item.Field_Type == 1)
//                        {
//                            models.FieldNumeric type = new models.FieldNumeric();
//                            type.id = item.Field_Type;
//                            type.name = item.Type_Param1;
//                            fieldModel.Type = type;
//                        }
//                        if (item.Field_Type == 0)
//                        {
//                            models.FieldText type = new models.FieldText();
//                            type.id = item.Field_Type;
//                            type.name = item.Type_Param1;
//                            fieldModel.Type = type;
//                        }
//                        if (item.Field_Type == 2)
//                        {
//                            models.FieldDate type = new models.FieldDate();
//                            type.id = item.Field_Type;
//                            type.name = item.Type_Param1;
//                            fieldModel.Type = type;
//                        }
//                        if (item.Field_Type == 3)
//                        {
//                            models.FieldVariantOne type = new models.FieldVariantOne();
//                            string[] parts = fieldModel.Value.Split(';');
//                            type.values = new Dictionary<int, string>();
//                            for (int i = 0; i < parts.Length; i++)
//                            {
//                                type.values.Add(i, parts[i]);
//                            }
//                            type.id = item.Field_Type;
//                            type.name = item.Type_Param1;
//                            fieldModel.Type = type;
//                        }
//                        if (item.Field_Type == 4)
//                        {
//                            models.FieldVariantMany type = new models.FieldVariantMany();
//                            string[] parts = fieldModel.Value.Split(';');
//                            type.values = new List<CheckBox>();
//                            for (int i = 0; i < parts.Length; i++)
//                            {
//                                CheckBox cb = new CheckBox();
//                                cb.Text = parts[i];
//                                type.values.Add(cb);
//                            }
//                            type.id = item.Field_Type;
//                            type.name = item.Type_Param1;
//                            fieldModel.Type = type;
//                        }

//                        if ((item.User_Edit_Flag)[0] == '1')
//                            fieldModel.UserCanEdit = true;
//                        else
//                            fieldModel.UserCanEdit = false;
//                        if ((item.Mandatory_Flag)[0] == '1')
//                            fieldModel.Mandatory = true;
//                        else
//                            fieldModel.Mandatory = false;

//                        fieldlist.Add(fieldModel);
//                    }
//                    tmpgroup.Fields = fieldlist;


//                    int count = 0;
//                    int max_count = 0;
//                    int level = FindMaxLevel(Id, context, ref count, ref max_count);

//                    tmpgroup.Level = level;

//                    return tmpgroup;
//                }

//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());
//                return null;
//            }
//        }

//        private static int FindMaxLevel(int id, tpks2Entities2 context, ref int count, ref int max_count)
//        {
//            var query = from grr in context.Group_Relation where grr.Child_Group_ID == id select grr;
//            foreach (var item in query)
//            {
//                count++;
//                FindMaxLevel(item.Parent_Group_ID, context, ref count, ref max_count);
//            }
//            if (count > max_count)
//            {
//                max_count = count;
//            }
//            count--;

//            list.Add(count);
//            return max_count;
//        }

//        /*
//          List<GroupModel> GetAllGroups(int OrderNum);
//            OrderNum=1 - Сортировка по алфавиту по умолчанию
//            2-по алфавиту в обратном порядке
//            3-по возрастанию количества юзеров
//            4-по убыванию количества юзеров
//         */

//        public static int qmagic1(List<models.GroupSmallModel> tmplist, List<models.GroupSmallModel> ourlist, int par)
//        {
//            int tec = 0;
//            int child = par;
//            while (tec < tmplist.Count)
//            {
//                foreach (var kvp in GetGroupById(tmplist[tec].Id).SelectedParents)
//                {
//                    if (kvp.Key == ourlist[par].Id)
//                    {
//                        var tmp = new models.GroupSmallModel();
//                        tmp.Id = tmplist[tec].Id;
//                        tmp.Level = tmplist[tec].Level;
//                        tmp.Count = tmplist[tec].Count;
//                        tmp.Name = tmplist[tec].Name;
//                        tmp.Fields = tmplist[tec].Fields;
//                        ourlist.Insert(child + 1, tmp);
//                        ourlist[child + 1].Level = ourlist[par].Level + 1;
//                        child = qmagic1(tmplist, ourlist, child + 1);
//                    }
//                }
//                tec++;
//            }
//            return child;
//        }

//        public static List<models.GroupSmallModel> GetAllGroups(int OrderNum)
//        {
//            List<models.GroupSmallModel> tmplist = GetAllGroupss(OrderNum);
//            if (tmplist.Count==0) return tmplist;
//            List<models.GroupSmallModel> ourlist = GetAllGroupss(OrderNum);
//            int qq = 0;
//            int lvl = 0;
//            while (qq == 0)
//            {
//                for (int i = 0; i < ourlist.Count; i++)
//                {
//                    if (ourlist[i].Level == lvl)
//                    {
//                        models.GroupSmallModel temp = ourlist[i];
//                        ourlist.Remove(ourlist[i]);
//                        ourlist.Insert(qq, temp);
//                        qq++;
//                    }
//                }
//                lvl++;
//            }

//            int iii = 0;
//            while (qq > 0)
//            {
//                iii = qmagic1(tmplist, ourlist, iii) + 1;
//                qq--;
//            }
//            iii++;
//            ourlist.RemoveRange(iii, ourlist.Count - iii);
//            return ourlist;
//        }

//        public static List<models.GroupSmallModel> GetAllGroupss(int OrderNum)
//        {
//            List<models.GroupSmallModel> tmplist = new List<models.GroupSmallModel>();
//            try
//            {
//                using (var context = new tpks2Entities2())
//                {
//                    switch (OrderNum)
//                    {
//                        case 1:
//                            {

//                                var query = from gr in context.Group orderby gr.Group_Name select gr;
//                                foreach (var item in query)
//                                {
//                                    tmplist.Add(GetAllGroupById(item.Group_ID));
//                                }
//                                return tmplist;
//                            }
//                        case 2:
//                            {
//                                var query = from gr in context.Group orderby gr.Group_Name descending select gr;
//                                foreach (var item in query)
//                                {
//                                    tmplist.Add(GetAllGroupById(item.Group_ID));
//                                }
//                                return tmplist;
//                            }
//                        case 3:
//                            {
//                                Dictionary<int, int> dic = new Dictionary<int, int>();
//                                var query1 = from ug in context.User_Group orderby ug.Group_ID select ug;
//                                int q = 0;
//                                foreach (var item in query1)
//                                {
//                                    if (q == item.Group_ID)
//                                    {
//                                        dic[item.Group_ID] = dic[item.Group_ID] + 1;
//                                    }
//                                    else
//                                        dic.Add(item.Group_ID, 1);
//                                    q = item.Group_ID;
//                                }

//                                ICollection<int> keys = dic.Keys;
//                                int count = dic.Count;
//                                for (int i = 0; i < count; i++)
//                                {
//                                    int min = dic[keys.Max()];
//                                    int minGroup = 0;
//                                    foreach (int j in keys)
//                                    {
//                                        if (dic[j] <= min)
//                                        {
//                                            min = dic[j];
//                                            minGroup = j;
//                                        }
//                                    }
//                                    tmplist.Add(GetAllGroupById(minGroup));
//                                    dic.Remove(minGroup);
//                                }
//                                dic.Clear();
//                                return tmplist;


//                            }
//                        default:
//                            {
//                                var query1 = from ug in context.User_Group orderby ug.Group_ID select ug;
//                                Dictionary<int, int> dic = new Dictionary<int, int>();
//                                int q = 0;
//                                foreach (var item in query1)
//                                {
//                                    if (q == item.Group_ID)
//                                    {
//                                        dic[item.Group_ID] = dic[item.Group_ID] + 1;
//                                    }
//                                    else
//                                        dic.Add(item.Group_ID, 1);
//                                    q = item.Group_ID;
//                                }

//                                ICollection<int> keys = dic.Keys;
//                                int count = dic.Count;
//                                for (int i = 0; i < count; i++)
//                                {
//                                    int max = 0;
//                                    int maxGroup = 0;
//                                    foreach (int j in keys)
//                                    {
//                                        if (dic[j] >= max)
//                                        {
//                                            max = dic[j];
//                                            maxGroup = j;
//                                        }
//                                    }
//                                    tmplist.Add(GetAllGroupById(maxGroup));
//                                    dic.Remove(maxGroup);
//                                }
//                                dic.Clear();
//                                return tmplist;
//                            }


//                    }
//                }

//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());
//                con.Close();
//                return null;
//            }

//        }


//        public static List<models.GroupSmallModel> GetAllGroup(int OrderNum, string searchField)
//        {
//            List<models.GroupSmallModel> tmplist = GetAllGroupHelper(OrderNum, searchField);
//            List<models.GroupSmallModel> ourlist = GetAllGroupHelper(OrderNum, searchField);
//            int qq = 0;
//            int lvl = 0;
//            while (qq == 0)
//            {
//                for (int i = 0; i < ourlist.Count; i++)
//                {
//                    if (ourlist[i].Level == lvl)
//                    {
//                        models.GroupSmallModel temp = ourlist[i];
//                        ourlist.Remove(ourlist[i]);
//                        ourlist.Insert(qq, temp);
//                        qq++;
//                    }
//                }
//                lvl++;
//            }

//            int iii = 0;
//            while (qq > 0)
//            {
//                iii = qmagic1(tmplist, ourlist, iii) + 1;
//                qq--;
//            }
//            iii++;
//            ourlist.RemoveRange(iii, ourlist.Count - iii);
//            return ourlist;
//        }

//        private static List<models.GroupSmallModel> GetAllGroupHelper(int OrderNum, string searchField)
//        {
//            List<models.GroupSmallModel> tmplist = new List<models.GroupSmallModel>();
//            if (searchField == "")
//            {
//                tmplist = GetAllGroupss(OrderNum);

//                return tmplist;
//            }

//            try
//            {
//                using (var context = new tpks2Entities2())
//                {
//                    switch (OrderNum)
//                    {
//                        case 1:
//                            {
//                                var query = from gr in context.Group orderby gr.Group_Name select gr;
//                                foreach (var item in query)
//                                {
//                                    if (item.Group_Name.IndexOf(searchField) > -1)
//                                        tmplist.Add(GetAllGroupById(item.Group_ID));
//                                }
//                                return tmplist;
//                            }
//                        case 2:
//                            {
//                                var query = from gr in context.Group orderby gr.Group_Name descending select gr;
//                                foreach (var item in query)
//                                {
//                                    if (item.Group_Name.IndexOf(searchField) > -1)
//                                        tmplist.Add(GetAllGroupById(item.Group_ID));
//                                }
//                                return tmplist;
//                            }
//                        case 3:
//                            {
//                                Dictionary<int, int> dic = new Dictionary<int, int>();
//                                var query1 = from ug in context.User_Group orderby ug.Group_ID select ug;
//                                var query2 = from gr in context.Group select gr;
//                                int q = 0;
//                                foreach (var item in query1)
//                                {
//                                    if (q == item.Group_ID)
//                                    {
//                                        dic[item.Group_ID] = dic[item.Group_ID] + 1;
//                                    }
//                                    else
//                                        dic.Add(item.Group_ID, 1);
//                                    q = item.Group_ID;
//                                }

//                                ICollection<int> keys = dic.Keys;
//                                int count = dic.Count;
//                                for (int i = 0; i < count; i++)
//                                {
//                                    int min = dic[keys.Max()];
//                                    int minGroup = 0;
//                                    foreach (int j in keys.Where(j => dic[j] <= min))
//                                    {
//                                        min = dic[j];
//                                        minGroup = j;
//                                    }
//                                    var group = query2.FirstOrDefault(x => x.Group_ID == minGroup);
//                                    if (group.Group_Name.IndexOf(searchField) > -1) tmplist.Add(GetAllGroupById(group.Group_ID));
//                                    dic.Remove(minGroup);
//                                }
//                                dic.Clear();
//                                return tmplist;

//                            }
//                        default:
//                            {
//                                var query1 = from ug in context.User_Group orderby ug.Group_ID select ug;
//                                var query2 = from gr in context.Group select gr;
//                                Dictionary<int, int> dic = new Dictionary<int, int>();
//                                int q = 0;
//                                foreach (var item in query1)
//                                {
//                                    if (q == item.Group_ID)
//                                    {
//                                        dic[item.Group_ID] = dic[item.Group_ID] + 1;
//                                    }
//                                    else
//                                        dic.Add(item.Group_ID, 1);
//                                    q = item.Group_ID;
//                                }

//                                ICollection<int> keys = dic.Keys;
//                                int count = dic.Count;
//                                for (int i = 0; i < count; i++)
//                                {
//                                    int max = 0;
//                                    int maxGroup = 0;
//                                    foreach (int j in keys.Where(j => dic[j] >= max))
//                                    {
//                                        max = dic[j];
//                                        maxGroup = j;
//                                    }
//                                    var group = query2.FirstOrDefault(x => x.Group_ID == maxGroup);
//                                    if (group.Group_Name.IndexOf(searchField) > -1) tmplist.Add(GetAllGroupById(group.Group_ID));
//                                    dic.Remove(maxGroup);
//                                }
//                                dic.Clear();
//                                return tmplist;
//                            }

//                    }
//                }

//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());
//                con.Close();
//                return null;
//            }

//        }


//        public static bool AddGroup1(int id, string name, string parflag)
//        {
//            using (var context = new tpks2Entities2())
//            {
//                 Привязка к записям идет по ключам Id                  
//                wne.Context.Group newGroup = new wne.Context.Group()
//                {
//                    Group_ID = id,
//                    Group_Name = name,
//                    Parent_Flag = parflag
//                };

//                 Сохраняем изменения в БД  
//                context.Group.Add(newGroup);
//                context.SaveChanges();
//                return true;
//            }

//        }

//        public static bool DeleteGroupByIdWithoutChild(int id)
//        {
//            ConnectionOpen();
//            try
//            {
//                con.Open();
//                var context = new tpks2Entities2();
//                foreach (var item in context.Group_Relation)
//                {
//                    if (item.Parent_Group_ID == id) context.Group_Relation.Remove(item);
//                    if (item.Child_Group_ID == id) context.Group_Relation.Remove(item);
//                }

//                /*SqlCommand com = new SqlCommand("Delete from \"Group_Relation\" where Parent_Group_ID=" + id, con);
//                com.ExecuteNonQuery();
//                com = new SqlCommand("Delete from \"Group_Relation\" where Child_Group_ID=" + id, con);
//                com.ExecuteNonQuery();*/
//                foreach (var item in context.Group_Field)
//                {
//                    if (item.Group_ID == id) context.Group_Field.Remove(item);
//                }
//                com = new SqlCommand("Delete from \"Group_Field\" where Group_ID=" + id, con);
//                com.ExecuteNonQuery();
//                foreach (var item in context.User_Grp_Prm_Value)
//                {
//                    if (item.Group_ID == id) context.User_Grp_Prm_Value.Remove(item);
//                }
//                com = new SqlCommand("Delete from \"User_Grp_Prm_Value\" where Group_ID=" + id, con);
//                com.ExecuteNonQuery();
//                foreach (var item in context.User_Group)
//                {
//                    if (item.Group_ID == id) context.User_Group.Remove(item);
//                }
//                com = new SqlCommand("Delete from \"User_Group\" where Group_ID=" + id, con);
//                com.ExecuteNonQuery();
//                foreach (var item in context.Group)
//                {
//                    if (item.Group_ID == id) context.Group.Remove(item);
//                }
//                com = new SqlCommand("Delete from \"Group\" where Group_ID=" + id, con);
//                com.ExecuteNonQuery();
//                con.Close();
//                context.SaveChanges();
//                return true;
//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());
//                con.Close();
//                return false;
//            }

//        }



//        public static bool DeleteGroupByIdWithChild(int id)
//        {
//            ConnectionOpen();
//            try
//            {
//                con.Open();
//                var context = new tpks2Entities2();
//                foreach (var item in context.Group_Relation)
//                {
//                    if (item.Parent_Group_ID == id) DeleteChild(id, context);
//                }
//                foreach (var item in context.Group_Relation)
//                {
//                    if (item.Parent_Group_ID == id) context.Group_Relation.Remove(item);
//                    if (item.Child_Group_ID == id) context.Group_Relation.Remove(item);
//                }

//                foreach (var item in context.Group_Field)
//                {
//                    if (item.Group_ID == id) context.Group_Field.Remove(item);
//                }

//                foreach (var item in context.User_Grp_Prm_Value)
//                {
//                    if (item.Group_ID == id) context.User_Grp_Prm_Value.Remove(item);
//                }

//                foreach (var item in context.User_Group)
//                {
//                    if (item.Group_ID == id) context.User_Group.Remove(item);
//                }

//                foreach (var item in context.Group)
//                {
//                    if (item.Group_ID == id) context.Group.Remove(item);
//                }
//                context.SaveChanges();
//                return true;
//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());
//                con.Close();
//                return false;
//            }

//        }

//        private static void DeleteChild(int id, tpks2Entities2 context)
//        {
//            /*com = new SqlCommand("Select Child_Group_ID from \"Group_Relation\" where Parent_Group_ID=" + id, con);
//            SqlDataReader rd = com.ExecuteReader();
//            while (rd.Read())
//            {
//                DeleteChild(rd.GetInt32(0), com, con);
//            }*/
//            foreach (var item in context.Group_Relation)
//            {
//                if (item.Parent_Group_ID == id) context.Group_Relation.Remove(item);
//                if (item.Child_Group_ID == id) context.Group_Relation.Remove(item);
//            }

//            foreach (var item in context.Group_Field)
//            {
//                if (item.Group_ID == id) context.Group_Field.Remove(item);
//            }

//            foreach (var item in context.User_Grp_Prm_Value)
//            {
//                if (item.Group_ID == id) context.User_Grp_Prm_Value.Remove(item);
//            }

//            foreach (var item in context.User_Group)
//            {
//                if (item.Group_ID == id) context.User_Group.Remove(item);
//            }

//            foreach (var item in context.Group)
//            {
//                if (item.Group_ID == id) context.Group.Remove(item);
//            }
//        }




//        public static bool IsValidLogOn(string userName, string pass)
//        {
//            try
//            {
//                using (var context = new tpks2Entities2())
//                {


//                    if (userName == "" || pass == "" || userName == null || pass == null)
//                    {
//                        return false;
//                    }
//                    if (!Regex.IsMatch(userName, "^[a-zA-Z0-9]+$") || !Regex.IsMatch(pass, "^[a-zA-Z0-9]+$"))
//                    {
//                        System.ApplicationException e = new System.ApplicationException("Wrong symbols");
//                        throw e;
//                    }
//                    var user = context.Users;

//                    foreach (var item in context.User)
//                    {
//                        if (item != null && item.Login == userName && item.Password == pass)
//                        {
//                            return true;
//                        }
//                    }
//                    return false;

//                }
//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());

//                return false;
//            }

//        }

//        public static bool IsAdmin(string userName)
//        {
//            try
//            {
//                using (var context = new tpks2Entities2())
//                {
//                    foreach (var item in context.User)
//                    {
//                        if (item != null && item.Login == userName && item.Admin_Flag == "1")
//                        {
//                            return true;
//                        }
//                    }
//                    return false;
//                }
//            }
//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());
//                return false;
//            }
//        }



//        /* подсобка(запросы)
//         insert into "Group" (Group_Name,Parent_Flag) values ('e','1')
//         insert into "Group_Relation" (Parent_Group_ID,Child_Group_ID) values (1003,1002)
//         insert into "Group_Field" (Group_ID,Field_Name,Field_Type,User_Edit_Flag,Mandatory_Flag) values (1004,'t',2,'1','0')
//         insert into "Type_Param" (Type_ID,Type_Param) values (2,'netnetnetnetnetnet')
//         insert into "User_Group" (User_ID,Group_ID) values (1004,1004)
//         */
//        public static models.GroupModel UpdateOrAddGroup(string id, string name, string CurrentParents, string FieldNames, string FieldTypes,
//            string fieldCanEdit, string fieldMandatore, string fieldVarValues)
//        {
//            using (var context = new tpks2Entities2())
//            {
//            var context = new tpks2Entities2();
//            try
//            {
//                models.GroupModel tmpgroup = new models.GroupModel();
//                if (id == null)
//                {

//                if (id == null)
//                {
//                    foreach (var item in context.Group)
//                    {
//                        if (item != null && item.Group_Name == name)
//                        {
//                            return null;
//                        }
//                    }

//                }
//                if (id == null)
//                {

//                    var gr = new wne.Context.Group();
//                    gr.Group_Name = name;
//                    gr.Parent_Flag = "1";
//                    context.Group.Add(gr);
//                    conte
//                    context.SaveChanges();
//                    context = new tpks2Entities2();
//                    var x = new Stuff();

//                    context.Entry(gr).GetDatabaseValues();
//                    com = new SqlCommand("insert into \"Group\" (Group_Name,Parent_Flag) values ('" + name + "','1')", con);
//                }
//                else
//                    foreach (var item in context.Group)
//                    {
//                        if (item.Group_ID == Convert.ToInt32(id))
//                        {
//                            item.Group_Name = name;
//                        }
//                    }


//                int newId = 0;

//                if (id == null)
//                {
//                    foreach (var item in context.Group)
//                    {
//                        if (item.Group_Name == name) newId = item.Group_ID;
//                    }
//                }
//                else
//                {
//                    newId = Convert.ToInt32(id);
//                }

//                string[] CParents = CurrentParents.Split(',');
//                foreach (var item in context.Group_Relation)
//                {
//                    if (item.Child_Group_ID == newId) context.Group_Relation.Remove(item);
//                }
//                int count = 0;
//                foreach (var item in context.Group_Relation)
//                {
//                    if (item.Counter > count) count = item.Counter;
//                }

//                for (int i = 0; i < CParents.Length; i++)
//                {
//                    if (CParents[i] != "")
//                    {
//                        count++;
//                        int ParId = Convert.ToInt32(CParents[i]);
//                        var tmpGrR = new wne.Context.Group_Relation();
//                        tmpGrR.Counter = count;
//                        tmpGrR.Child_Group_ID = newId;
//                        tmpGrR.Parent_Group_ID = ParId;
//                        context.Group_Relation.Add(tmpGrR);
//                    }
//                }
//                string[] FNames = FieldNames.Split(',');
//                string[] FTypes = FieldTypes.Split(',');
//                string[] FCanEdit = fieldCanEdit.Split(',');
//                string[] FMandatore = fieldMandatore.Split(',');
//                string[] FfieldVarValues = fieldVarValues.Split(',');
//                tmpgroup = GetGroupById(newId);
//                ConnectionOpen();
//                int k=0;
//                char CanEdit, Mandatore;

//                if (id != null && FNames[0] == "" && FTypes[0] == "" && FCanEdit[0] == "" && fieldMandatore == "" && fieldVarValues == "")
//                {
//                    foreach (var item in context.Group_Field)
//                    {
//                        if (item.Group_ID == Convert.ToInt32(id)) context.Group_Field.Remove(item);
//                    }

//                }
//                if (id != null && FNames[0] != "" && FTypes[0] != "" && FCanEdit[0] != "" && fieldMandatore != "" && fieldVarValues != "")
//                {
//                    bool check = false;
//                    foreach (models.FieldModel f in tmpgroup.Fields)
//                    {
//                        check = false;
//                        for (int i = 0; i < FNames.Length; i++)
//                        {
//                            if (f.Name == FNames[i]) check = true;
//                        }
//                        if (!check)
//                        {
//                            foreach (var item in context.Group_Field)
//                            {
//                                if (item.Group_ID == Convert.ToInt32(id) && item.Field_Name == f.Name) context.Group_Field.Remove(item);
//                            }

//                        }
//                    }


//                    for (int i = 0; i < FNames.Length; i++)
//                    {
//                        check = false;
//                        int Ftype = Convert.ToInt32(FTypes[i]);
//                        models.FieldModel field = new models.FieldModel();
//                        if (FCanEdit[i] == "false")
//                            CanEdit = '0';
//                        else
//                            CanEdit = '1';
//                        if (FMandatore[i] == "false")
//                            Mandatore = '0';
//                        else
//                            Mandatore = '1';
//                        foreach (models.FieldModel f in tmpgroup.Fields)
//                        {
//                            if (f.Name == FNames[i])
//                            {
//                                foreach (var item in context.Group_Field)
//                                {
//                                    if (item.Group_ID == Convert.ToInt32(id) && item.Field_Name == f.Name)
//                                    {
//                                        item.Field_Name = FNames[i];
//                                        item.Field_Type = Ftype;
//                                        item.Field_Value = FfieldVarValues[i];
//                                        item.User_Edit_Flag = Convert.ToString(CanEdit);
//                                        item.Mandatory_Flag = Convert.ToString(Mandatore);
//                                    }
//                                }
//                                check = true;
//                            }

//                        }
//                        if (!check)
//                        {
//                            var tmpGroup_field = new wne.Context.Group_Field();
//                            tmpGroup_field.Group_ID = newId;
//                            tmpGroup_field.Field_Name = FNames[i];
//                            tmpGroup_field.Field_Type = Ftype;
//                            tmpGroup_field.Field_Value = FfieldVarValues[i];
//                            tmpGroup_field.User_Edit_Flag = Convert.ToString(CanEdit);
//                            tmpGroup_field.Mandatory_Flag = Convert.ToString(Mandatore);
//                            context.Group_Field.Add(tmpGroup_field);

//                        }
//                    }
//                }
//                /*                                      Карочи, это поможет тебе с параметром fieldVarValues. Жи есть. Это парсер этого параметра.
//                List<string[]> FVarValues = new List<string[]>();
//                string[] tmpVarValues = fieldVarValues.Split(',');
//                for (int i = 0; i < tmpVarValues.Length; i++)
//                {
//                    FVarValues.Add(tmpVarValues[i].Split(';'));
//                }
//                 */

//                if (id == null && FNames[0] != "" && FTypes[0] != "" && FCanEdit[0] != "" && fieldMandatore != "")
//                {
//                    for (int i = 0; i < FNames.Length; i++)
//                    {
//                        int Ftype = Convert.ToInt32(FTypes[i]);

//                        if (FCanEdit[i] == "false")
//                        {
//                            CanEdit = '0';
//                        }
//                        else
//                        {
//                            CanEdit = '1';
//                        }
//                        if (FMandatore[i] == "false")
//                        {
//                            Mandatore = '0';
//                        }
//                        else
//                        {
//                            Mandatore = '1';
//                        }

//                        if (id == null)
//                        {
//                            var tmp1 = new wne.Context.Group_Field();
//                            tmp1.Group_ID = newId;
//                            tmp1.Field_Name = FNames[i];
//                            tmp1.Field_Type = Ftype;
//                            tmp1.Field_Value = FfieldVarValues[i];
//                            tmp1.User_Edit_Flag = Convert.ToString(CanEdit);
//                            tmp1.Mandatory_Flag = Convert.ToString(Mandatore);
//                            context.Group_Field.Add(tmp1);
//                            com = new SqlCommand("insert into \"Group_Field\" (Group_ID,Field_Name,Field_Type,Field_Value,User_Edit_Flag,Mandatory_Flag) values (" + newId + ",'" + FNames[i] + "'," + Ftype + ",'" + FfieldVarValues[i] + "','" + CanEdit + "','" + Mandatore + "')", con);
//                        }
//                        else
//                        com = new SqlCommand("update \"Group_Field\" set Field_Name=" + FNames[i] + ", Field_Type=" + Ftype + ", User_Edit_Flag=" + CanEdit + ", Mandatory_Flag=" + Mandatore + " where Group_id=" + Convert.ToInt32(id) + "", con);
//                        com.ExecuteNonQuery();
//                    }
//                }
//                if (id != null && CurrentParents != "")
//                {
//                    for (int i = 0; i < CParents.Length; i++)
//                    {
//                        if (CParents[i] != "")
//                        {
//                            foreach (var item in context.User_Grp_Prm_Value)
//                            {
//                                if (item.Group_ID == Convert.ToInt32(id))
//                                {
//                                    foreach (var itemGF in context.Group_Field)
//                                    {
//                                        if (itemGF.Group_ID == Convert.ToInt32(CParents[i]))
//                                        {
//                                            var item1 = new wne.Context.User_Grp_Prm_Value();
//                                            item1.Field_Value = "f";
//                                            item1.Field_ID = itemGF.Field_ID;
//                                            item1.Group_ID = Convert.ToInt32(CParents[i]);

//                                            item1.User_ID = item.User_ID;
//                                            context.User_Grp_Prm_Value.Add(item1);

//                                        }
//                                    }
//                                }
//                            }

//                        }
//                    }

//                }
//                tmpgroup = GetGroupById(newId);
//                context.SaveChanges();
//                con.Close();
//                return tmpgroup;
//            }

//            catch (Exception ex)
//            {
//                System.Diagnostics.Debug.Write(ex.ToString());
//                con.Close();
//                return null;
//            }
//            }
//        }


//        public static AllUsersModel GetAllUserWithoutFields()
//        {
//            var model = new AllUsersModel();
//            using (var context = new tpks2Entities2())
//            {
//                var user_temp = context.User.Select(x => x).OrderBy(y => y.Second_Name).ThenBy(a => a.First_Name);
//                model.CurrentGroupId = 0;
//                model.Fields = new List<UserFields>();
//                model.AllUsers = new List<OneUser>();
//                foreach (var user in user_temp)
//                {
//                    model.AllUsers.Add(new OneUser
//                    {
//                        Id = user.User_ID,
//                        Fio = user.Second_Name + " " + user.First_Name + " " + user.Last_Name,
//                        EMail = user.Email,
//                        Birthday = user.Birth_Date.ToShortDateString(),
//                        Fields = new List<UserFields>()
//                    });
//                }
//            }
//            return model;
//        }

//        public static AllUsersModel GetUsersByGroupId(int id)
//        {
//            var model = new AllUsersModel();

//            using (var context = new tpks2Entities2())
//            {
//                model.CurrentGroupId = 0;
//                model.Fields = context.Group_Field
//                    .Where(x => x.Group_ID == id).Select(x => new UserFields
//                {
//                    Id = x.Field_ID,
//                    Value = x.Field_Name
//                }).ToList();
//                model.AllUsers = context.User.Include("User_Group").Include("User_Grp_Prm_Value")
//                    .Where(x => x.User_Group.Select(y => y.Group_ID).Any(y => y == id))
//                    .Where(x => x.User_Grp_Prm_Value.Select(y => y.Group_ID).Any(z => z == id)).Distinct()
//                    .Select(user => new OneUser
//                    {
//                        Id = user.User_ID,
//                        Fio = user.Second_Name + " " + user.First_Name + " " + user.Last_Name,
//                        EMail = user.Email,
//                        Birthday = "11",//user.Birth_Date.ToShortDateString(),
//                        Fields = user.User_Grp_Prm_Value.Where(x => x.User_ID == user.User_ID)
//                            .Select(cc => new UserFields { Id = cc.Field_ID, Value = cc.Field_Value }).ToList()
//                    }).ToList();
//            }
//            return model;
//        }

//        public static Dictionary<int, string> GetAllGroups()
//        {
//            var res = new Dictionary<int, string>();
//            using (var context = new tpks2Entities2())
//            {
//                foreach (var group in context.Group)
//                    res.Add(group.Group_ID, group.Group_Name);
//            }
//            return res;
//        }
//    }


//}

//namespace wne.core.Interface
//{
//    public class QAccountFacade : AccountFacade
//    {
//         <summary>
//         Этот метод определяет, есть ли пользователь с таким сочетанием UserName/Pass в базе
//         </summary>
//         <param name="userName">Введенное имя пользователя</param>
//         <param name="pass">Введенный пароль</param>
//         <returns>true - если такой пользователем с таким паролем есть, false - иначе</returns>
//        public bool IsValidLogOn(string userName, string pass) { return wne.core.Class1.IsValidLogOn(userName, pass); }
//         <summary>
//         Определяет, есть ли такой пользователь-администратор
//         </summary>
//         <param name="userName">Введенное имя пользователя</param>
//         <returns>true - если есть такой пользователь, и он администратор. false - иначе</returns>
//        public bool IsAdmin(string userName) { return wne.core.Class1.IsAdmin(userName); }
//    }

//    public class QAdminFacade : IAdminFacade
//    {
//         <summary>
//         Возвращает всю информацию о группе в базе по заданному идентефикатору
//         </summary>
//         <param name="id">Идентефикатор группы</param>
//         <returns>Заполненный данными из БД экземпляр класса models.GroupModel</returns>
//        public wne.models.GroupModel GetGroupById(int id) { return wne.core.Class1.GetGroupById(id); }
//         <summary>
//         Возвращает список всех групп, которые есть в базе, и необходимую информацию о них
//         </summary>
//         <param name="orderNum">Порядковый номер сортировки.1 - Сортировка по алфавиту по умолчанию. 2-по алфавиту в обратном порядке 
//         3-по возрастанию количества юзеров. 4-по убыванию количества юзеров</param>
//         <returns>Заполненный данными из бд список экземпляров класса models.GroupSmallModel</returns>
//        public List<wne.models.GroupSmallModel> GetAllGroups(int orderNum) { return wne.core.Class1.GetAllGroups(orderNum); }
//         <summary>
//         Удаляет из базы группу с заданным идентефикатором.
//         </summary>
//         <param name="id"></param>
//        public void DeleteGroupByIdWithoutChild(int id) { wne.core.Class1.DeleteGroupByIdWithoutChild(id); }

//        public wne.models.GroupModel UpdateOrAddGroup(string id, string name, string CurrentParents, string FieldNames, string FieldTypes,
//            string fieldCanEdit, string fieldMandatore, string fieldVarValues)
//        {
//            return new wne.models.GroupModel();
//        }

//        public EditUserModel GetUserById(int id)
//        {
//            throw new NotImplementedException();
//        }

//        public bool UpdateOrAddUser(EditUserModel model)
//        {
//            throw new NotImplementedException();
//        }

//        public EditUserModel delGroup(EditUserModel model, int GroupId)
//        {
//            throw new NotImplementedException();
//        }

//        public EditUserModel addGroup(EditUserModel model, int GroupId)
//        {
//            throw new NotImplementedException();
//        }
//    }
//}